class SalidasAlmacenController < ApplicationController
  before_action :set_salida_almacen, only: [:show, :edit, :update, :destroy,:salida_items,:guardar_salida_items]

  # GET /salidas_almacen
  # GET /salidas_almacen.json
  def index
    @receiving_tickets = ReceivingTicket.rts_sin_salida
    @salidas = SalidaAlmacen.all
  end

  # GET /salidas_almacen/1
  # GET /salidas_almacen/1.json
  def show
    @items_salida = @salida_almacen.detalles_rt_salida
  end

  # GET /salidas_almacen/new
  def new
    @salida_almacen = SalidaAlmacen.new
    @receiving_ticket = ReceivingTicket.find(params[:receiving_ticket_id])
    valores_combos
  end

  # GET /salidas_almacen/1/edit
  def edit
    @receiving_ticket = @salida_almacen.receiving_ticket
    valores_combos
  end

  # POST /salidas_almacen
  # POST /salidas_almacen.json
  def create
    @salida_almacen = SalidaAlmacen.new(salida_almacen_params)

    respond_to do |format|
      if @salida_almacen.save
        format.html { redirect_to salida_items_path(@salida_almacen), notice: 'Salida almacen was successfully created.' }
        format.json { render action: 'show', status: :created, location: @salida_almacen }
      else
        format.html { render action: 'new' }
        format.json { render json: @salida_almacen.errors, status: :unprocessable_entity }
      end
    end
  end

  # PATCH/PUT /salidas_almacen/1
  # PATCH/PUT /salidas_almacen/1.json
  def update
    respond_to do |format|
      if @salida_almacen.update(salida_almacen_params)
        format.html { redirect_to salida_items_path(@salida_almacen), notice: 'Salida almacen was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @salida_almacen.errors, status: :unprocessable_entity }
      end
    end
  end

  # DELETE /salidas_almacen/1
  # DELETE /salidas_almacen/1.json
  def destroy
    @salida_almacen.destroy
    respond_to do |format|
      format.html { redirect_to salidas_almacen_url }
      format.json { head :no_content }
    end
  end
  
  def busqueda_rts
    @receiving_tickets = ReceivingTicket.all
  end
  
  def buscar_rts
   lote = params[:lote] == "" ? '1' : params[:lote]
    item = params[:item] == "" ? '1' : params[:item]
    rt = params[:rt] == "" ? '1' : params[:rt]
    @detalles_rts = RtDetalle.where("receiving_ticket_id = ? OR lote = ? OR item_id = ?",rt,lote,item)
    @salida_almacen = SalidaAlmacen.find(params[:id])

    respond_to do |format|
      format.js
    end
  end
  
  def salida_items
    @salida_almacen = SalidaAlmacen.find(params[:id])
    @items_salida = @salida_almacen.detalles_rt_salida
    @receiving_ticket = @salida_almacen.receiving_ticket
    @salida_almacen.detalles_rt_salida.build
  end
  
  def guardar_salida_items

    detalle_rt_salida = DetalleRtSalida.new(det_rt_salida_almacen_params)
    respond_to do |format|
      if detalle_rt_salida.save
        puts "PASO"
        rt_det = detalle_rt_salida.rt_detalle
          unless rt_det.cantidad == 0
            rt_det.cantidad = rt_det.cantidad - 1
            #rt_det.cantidad = rt_det.cantidad - params[:detalles_rt_salida][:cantidad]
            rt_det.save
          end
        format.html { redirect_to salida_items_path(@salida_almacen), notice: 'Salida almacen was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: 'edit' }
        format.json { render json: @salida_almacen.errors, status: :unprocessable_entity }
      end
    end
#    @rts_detalle_ids = params[:rt]
#    unless @rts_detalle_ids.nil?
##      @salida_almacen.detalles_rt_salida.destroy_all
#      @rts_detalle_ids.each do |rt_detalle|
#        detalle = @salida_almacen.detalles_rt_salida.build
#        detalle.rt_detalle_id = rt_detalle["detalle"]
#        if detalle.save
#          rt_det = detalle.rt_detalle
#          unless rt_det.cantidad == 0
#            rt_det.cantidad = rt_det.cantidad - 1
#            rt_det.save
#          end
#          
#        end
#      end
#    end
    
#    redirect_to salida_items_path(@salida_almacen), notice: 'Items registrados en la salida' 
    
  end
  
  def eliminar_detalle_rt_salida
    @detalle = DetalleRtSalida.find(params[:id])
    @detalle.destroy
    respond_to do |format|
      format.html { redirect_to salida_items_path(@detalle.salida_almacen) }
      format.json { head :no_content }
      format.js
    end
    
  end

 
  private
    # Use callbacks to share common setup or constraints between actions.
    def set_salida_almacen
      @salida_almacen = SalidaAlmacen.find(params[:id])
    end

    # Never trust parameters from the scary internet, only allow the white list through.
    def salida_almacen_params
      params.require(:salida_almacen).permit(:receiving_ticket_id,:fecha_de_orden, :salida_autorizada_por, :total_bultos, :total_pallets, 
        :cargado_por, :observaciones, :tipo_vehiculo, :transportista_id, :nombre_chofer_transportista, :precinto_sello, :procesado_operativo, 
        :procesado_bodega,:tipo_vehiculo_id, detalles_rt_salida_attributes: [ :rt_detalle_id, :receiving_ticket_id, :salida_almacen_id, :no_parte, :descripcion, :cantidad, :peso, :pallets, :pedimento, :comentarios])
    end
    
    def det_rt_salida_almacen_params
      params.require(:detalles_rt_salida).permit(:rt_detalle_id, :salida_almacen_id, :receiving_ticket_id, :no_parte, :descripcion, :cantidad, :peso, :pallets, :pedimento, :comentarios)
    end
    
    def valores_combos
      @transportistas =Transportista.all
      @empleados = Empleado.all
      @tipos_vehiculo = TipoVehiculo.all
    end
end
